﻿#include "BreathingLight.h"

BreathingLight::BreathingLight(QWidget *parent)
    : QWidget(parent)
    , m_alpha(0)
{
    setFixedSize(200, 200);

    // 创建两个动画，一个从0到255，一个从255到0
    QPropertyAnimation *animationUp = new QPropertyAnimation(this, "alpha");
    animationUp->setDuration(2000);                       // 动画时长为2000毫秒
    animationUp->setStartValue(50);                       // 起始透明度
    animationUp->setEndValue(255);                        // 结束透明度
    animationUp->setEasingCurve(QEasingCurve::InOutQuad); // 使用平滑的缓入缓出动画曲线

    QPropertyAnimation *animationDown = new QPropertyAnimation(this, "alpha");
    animationDown->setDuration(2000);                       // 动画时长为2000毫秒
    animationDown->setStartValue(255);                      // 起始透明度
    animationDown->setEndValue(50);                         // 结束透明度
    animationDown->setEasingCurve(QEasingCurve::InOutQuad); // 使用平滑的缓入缓出动画曲线

    // 创建一个动画组，将两个动画添加进去，并设置为循环播放
    QSequentialAnimationGroup *animationGroup = new QSequentialAnimationGroup(this);
    animationGroup->addAnimation(animationUp);
    animationGroup->addAnimation(animationDown);
    animationGroup->setLoopCount(-1); // 无限循环
    animationGroup->start();          // 启动动画组
}

void BreathingLight::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);
    QPainter painter(this);
    QColor color(2, 175, 38, m_alpha); // 绿色，使用 m_alpha 透明度
    painter.setBrush(color);
    painter.setPen(Qt::NoPen);
    QRect paint_rect = rect();
    paint_rect.adjust(90, 90, -90, -90);
    painter.drawEllipse(paint_rect); // 绘制一个椭圆，填充整个窗口
}
